iT邦幫忙

2022 iThome 鐵人賽

DAY 17
0

Notification廣泛被使用在多App,最常見如Line或是遊戲有甚麼坑錢的活動的時候,都會跳一欄通知在手機的最上方,既然是這麼常見的功能一定要來講一下,到底我們怎們來發一個屬於自己的廣播呢?

首先我先來介紹幾個重要類別。

  • NotificationChannel

發送頻道,Notification會需要一個的發送的頻道。

  • NotificationCompat

設定此次廣播的特徵,包括圖示、內容等等多個屬性特徵,大多跟廣播有關的設定都在這裡。

  • NotificationManager

通知實際Notification管理者,與Channel結合,負責發送。

範例

  1. 加入權限
//震動權限
<uses-permission android:name="android.permission.VIBRATE" />
//提示燈權限
<uses-permission android:name="android.permission.FLASHLIGHT"/>
  1. 創建Channel
 //NotificationChannel 頻道建立
 NotificationChannel channel = new NotificationChannel(
 "MyChannel","Demo",NotificationManager.IMPORTANCE_DEFAULT);

 //致能震動
 channel.enableVibration(true);
 //設定震動模式
 channel.setVibrationPattern(new long[]{500, 500});
 //致能閃燈
 channel.enableLights(true);
  1. 建立NotificationManager實例
//獲取NotificationManager
manager = getSystemService(NotificationManager.class);
//創建新頻道,與上一步的頻道結合。
manager.createNotificationChannel(channel);
  1. 設置Notification的Intent(PendingIntent)
Intent intent = new Intent(getApplicationContext(),MainActivity.class);
//設置Action
intent.setAction("Notification");
//將要發的通知加上點擊事件
PendingIntent pendingIntent = PendingIntent.getActivity
                    (MainActivity.this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
  1. 設置NotificationCompat,透過NotificationCompat.Builder
NotificationCompat.Builder builder
       = new NotificationCompat.Builder(MainActivity.this,CHANNEL_ID)
       //提示欄的小圖示
       .setSmallIcon(R.drawable.ic_baseline_arrow_back_24)
       //標題
       .setContentTitle("你的廣播!")
       //內文
       .setContentText("it幫幫忙Notification")
       //發出時間
       .setWhen(System.currentTimeMillis())
       //設定鈴聲、震動等為預設值
       .setDefaults(Notification.DEFAULT_ALL)
       //設定震動
       .setVibrate(new long[]{500l,1000l})
       //設置被點擊後自動取消
       .setAutoCancel(true)
       //設置優先權
       .setPriority(NotificationCompat.PRIORITY_HIGH)
       //設置類型
       .setCategory(NotificationCompat.CATEGORY_MESSAGE)
       //設置此Notification Intend
       .setContentIntent(pendingIntent);
  1. 發送廣播
//將NotificationCompat.Builder build()完,並notify(代表此Notification的id,NotificationCompat)
manager.notify(1,builder.build());

經過以上設定就完成一個簡單的通知發送了,我們來看看最後的效果。

效果

https://ithelp.ithome.com.tw/upload/images/20220817/20139136mEZiyqHVvr.jpg


上一篇
精華筆記 Day16-- BroadCast
下一篇
精華筆記 Day18 -- MVC/MVP架構簡述
系列文
android studio 30天 精華筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言